﻿namespace OasisCiq.Xpil
{
    using System.Collections.Specialized;
    using CommonTypes;
    using External;
    using XS;

    /// <summary>
    /// Container for organisation specific details that are 
    /// not covered in this schema that is common to a party
    /// </summary>
    public class OrganisationInfo : IDataQualityGroup, IExtendedAttributes
    {
        public OrganisationInfo()
        {
        }

        /// <summary>
        /// Type of organisation. Free text description, 
        /// e.g. Company, Trust, Bank, Society, Club, etc.
        /// </summary>
        public OrganisationInfoTypeList Type { get; set; }

        /// <summary>
        /// Type of category the organisation belongs to such as
        /// club, association, company, vendor, etc
        /// </summary>
        public OrganisationCategoryTypeList CategoryType { get; set; }

        /// <summary>
        /// Status of the entity. e.g. Old, Current, Inactive, Active, etc
        /// </summary>
        public StatusList Status { get; set; }

        /// <summary>
        /// Nature of the organisation. e.g. 
        /// Public limited, Commercial, charity, non-commercial, etc.
        /// </summary>
        public OrganisationInfoNatureList Nature { get; set; }

        /// <summary>
        /// Organisation Industry type such as IT, Manufacturing.
        /// </summary>
        public IndustryTypeList IndustryType { get; set; }

        /// <summary>
        /// Industry code or classification
        /// </summary>
        public IndustryCodeList IndustryCode { get; set; }

        /// <summary>
        /// Type of code used for industry code
        /// </summary>
        public CTString IndustryCodeType { get; set; }

        /// <summary>
        /// Free text description of organisation size in terms of number of employees
        /// </summary>
        public CTString NumberOfEmployees { get; set; }

        /// <summary>
        /// Operating hour start time of the organisation, e.g. 9:00am
        /// </summary>
        public XSTime OperatingHourStartTime { get; set; }

        /// <summary>
        /// Operating hour end time for the organisation. e.g. 5:00pm
        /// </summary>
        public XSTime OperatingHourEndTime { get; set; }

        /// <summary>
        /// This attribute indicates what level of trust can be given to the parent element.
        /// Omit this attribute if the data quality is unknown. If the data quality is known,
        /// the value is "Valid, else "InValid"
        /// </summary>
        public DataQualityTypeList DataQualityType { get; set; }

        /// <summary>
        /// Date the data quality is valid from
        /// </summary>
        public XSDateTime ValidFrom { get; set; }

        /// <summary>
        /// Date the data quality is valid to
        /// </summary>
        public XSDateTime ValidTo { get; set; }

        public NameValueCollection ExtendedAttributes { get; set; }
    }
}
